Python:评估 pytorch 模型:`with torch.no | 您所在的位置:网站首页 › python model forward › Python:评估 pytorch 模型:`with torch.no |
长话短说:
两者都用。他们做不同的事情,有不同的范围。 with torch.no_grad - 禁用autograd中的渐变跟踪。 model.eval()更改调用它的模块的forward()行为 例如,它禁用 dropout 并让批处理规范使用整个人口统计数据 with torch.no_gradtorch.autograd.no_grad文档说: 禁用 [原文如此] 梯度计算的上下文管理器。 当您确定不会调用Tensor.backward()时,禁用梯度计算对于推理很有用。它将减少计算的内存消耗,否则requires_grad=True 。在这种模式下,每个计算的结果都会有requires_grad=False ,即使输入有requires_grad=True 。 model.eval()nn.Module.eval文档说: 将模块设置为评估模式。 这仅对某些模块有任何影响。如果它们受到影响,请参阅特定模块的文档以了解它们在训练/评估模式下的行为的详细信息,例如Dropout 、 BatchNorm等。 pytorch 的创建者说应该更新文档以建议两者的用法,我提出了pull request 。 |
CopyRight 2018-2019 实验室设备网 版权所有 |